package com.fuze.navi.service;

import com.fuze.navi.domain.dto.UserDTO;
import com.fuze.navi.domain.model.User;

import java.util.Optional;

/**
 * @author sepc_
 * @date 3/16/2021 15:27
 */
public interface UserService {

    /**
     * 根据用户的账号查询用户信息
     *
     * @param account 用户的账号（使用手机号）
     * @return 已有的用户信息
     */
    Optional<User> getUserByAccount(String account);

    /**
     * 注册用户
     *
     * @param userDTO 用户的注册数据
     */
    void register(UserDTO userDTO);

    /**
     * 判断用户的账号是否存在
     *
     * @param account 用户的账号
     * @return 是否存在
     */
    boolean isExist(String account);

    /**
     * 重置用户密码
     *
     * @param userId 用户的ia
     * @param newPwd 新密码
     */
    void resetPwd(String userId, String newPwd);

    /**
     * 用户的登录校验
     *
     * @param userDTO 用户的登录数据
     * @return token
     */
    Optional<String> checkAccount(UserDTO userDTO);
}
